Beeman's algorithm is a method for numerically integrating ordinary differential equations of order 2, more specifically Newton's equations of motion . It was designed to allow high numbers of particles in simulations of molecular dynamics. There is a direct or explicit and an implicit variant of the method. The direct variant was published by Schofield [1] in 1973 as personal communication by Beeman. This is what is commonly known as Beeman's method. It is a variant of the Verlet integration method. It produces identical positions, but uses a different formula for the velocities. Beeman[2] in 1976 published a class of implicit (predictor-corrector) multi-step methods, where Beeman's method is the direct variant of the third order method in this class.
Contents |
The formula used to compute the positions at time in the full predictor-corrector[2] scheme is:
Using only the predictor formula and the corrector for the velocities one obtains a direct or explicit method[1] which is a variant of the Verlet integration method[3]:
</math>. This is the variant that is usually understood as Beeman's method.
Beeman[2] also proposed to alternatively replace the velocity update in the last equation by the second order Adams–Moulton method:
where
In systems where the forces are a function of velocity in addition to position, the above equations need to be modified into a predictor-corrector form whereby the velocities at time are predicted and the forces calculated, before producing a corrected form of the velocities.
An example is:
The velocities at time t = are then calculated from the positions.
The accelerations at time t = are then calculated from the positions and predicted velocities.
As shown above, the local error term is for position and velocity,resulting in a global error of . In comparison, Verlet is for position and for velocity, however, the more important global error is . In exchange for greater accuracy, Beeman's algorithm is moderately computationally more expensive.
The simulation must keep track of position, velocity, acceleration and previous acceleration vectors per particle (though some clever work-arounds for storing the previous acceleration vector are possible), keeping its memory requirements on par with velocity Verlet and slightly more expensive than the original Verlet method.